package projetobancodedados;

import java.sql.*;
import java.util.ArrayList;

/**
 */
public class DefesaControle {
    connectionFactory cnFact;
    Connection con;
    public DefesaControle()
    {
        cnFact = new connectionFactory();
        con = cnFact.getConnection();
    }
    public void addDefesa(Defesa d)
    {
        try{
            int cod_defesa = d.getID();
            String doc_aluno = d.getAluno();
            String doc_professor = d.getProf();
            Date data = d.getData();
            String titulo_defesa = d.getTitulo();
            
            String query = "INSERT INTO defesas(cod_defesa, doc_aluno, doc_professor, data,"
                    + "titulo_defesa) VALUES (?, ?, ?, ?, ?)";
            PreparedStatement ps = con.prepareStatement(query);
            ps.setInt(1, cod_defesa);
            ps.setString(2, doc_aluno);
            ps.setString(3, doc_professor);
            ps.setDate(4, data);
            ps.setString(5, titulo_defesa);
            ps.executeUpdate();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    public ArrayList listaDefesas(){
        ArrayList<Defesa> defesas = new ArrayList();
        Defesa d;
        try{
            Statement stm = con.createStatement();
            ResultSet rs = stm.executeQuery("select defesas.cod_defesa, defesas.titulo_defesa, aluno.nome as aluno, professor.nome as Professor, defesas.data "
                    + "from aluno inner join defesas on aluno.doc_aluno = defesas.doc_aluno "
                    + "inner join professor on professor.doc_professor = defesas.doc_professor");
            while(rs.next()){
                d = new Defesa(Integer.parseInt(rs.getString("cod_defesa")),rs.getString("titulo_defesa"), rs.getString("aluno"
                        + ""), rs.getString("professor"), rs.getDate("data"));
                defesas.add(d);
            }
       }catch(Exception e){
           e.printStackTrace();
       }
        return defesas;
    }
    
    public void closeConnection()
    {
        try{
            con.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}
